home *** CD-ROM | disk | FTP | other *** search
/ InterCD 2000 September / september_2000.iso / intercd / root / ^Linux / cfengine-1.5.3 / src / cfparse.y < prev    next >
Encoding:
Lex Description  |  1999-01-28  |  6.5 KB  |  207 lines

  1. %{
  2. /* cfengine for GNU
  3.  
  4.         Copyright (C) 1995
  5.         Free Software Foundation, Inc.
  6.  
  7.    This file is part of GNU cfengine - written and maintained 
  8.    by Mark Burgess, Dept of Computing and Engineering, Oslo College,
  9.    Dept. of Theoretical physics, University of Oslo
  10.  
  11.    This program is free software; you can redistribute it and/or modify it
  12.    under the terms of the GNU General Public License as published by the
  13.    Free Software Foundation; either version 2, or (at your option) any
  14.    later version.
  15.  
  16.    This program is distributed in the hope that it will be useful,
  17.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.    GNU General Public License for more details.
  20.  
  21.   You should have received a copy of the GNU General Public License
  22.   along with this program; if not, write to the Free Software
  23.   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
  24.  
  25. */
  26.  
  27.  
  28. /*******************************************************************/
  29. /*                                                                 */
  30. /*  PARSER for cfengine                                            */
  31. /*                                                                 */
  32. /*******************************************************************/
  33.  
  34. #include <stdio.h>
  35. #include "cf.defs.h"
  36. #include "cf.extern.h"
  37.  
  38. extern char *yytext;
  39.  
  40. %}
  41.  
  42. %token ID LIST ITEM VARPATH PATH LBRACK RBRACK CONTROL GROUPS
  43. %token IMAGE RESOLVE PROCESSES FILES TIDY HOMESERVERS BINSERVERS
  44. %token LINKS IMPORT SCRIPTS ARROW EQUALS WILDCARD REQUIRED EDITFILES
  45. %token NETMASK BROADCAST TIMEZONE QSTRING DISABLE MAKEPATH
  46. %token FILEIGNORE MOUNTPATH HOMEPAT VARITEM MAILSERVER MOUNTABLES
  47. %token DEFAULTROUTE MISCMOUNTS UNMOUNT LBRACE RBRACE PARSECLASS LARROW
  48. %token ACL ADMIT DENY INTERFACES
  49.  
  50. %%
  51.  
  52. specification:       { yyerror("Warning: invalid statement"); }
  53.                      | statements;
  54.  
  55. statements:            statement
  56.                      | statements statement;
  57.  
  58. statement:             CONTROL controllist
  59.                      | CONTROL
  60.                      | GROUPS declarations
  61.                      | GROUPS
  62.                      | IMAGE classlist
  63.                      | IMAGE
  64.                      | RESOLVE classlist
  65.                      | RESOLVE
  66.                      | INTERFACES classlist
  67.                      | INTERFACES
  68.                      | PROCESSES classlist
  69.                      | PROCESSES
  70.                      | FILES classlist
  71.                      | FILES
  72.                      | TIDY classlist
  73.                      | TIDY
  74.                      | HOMESERVERS classlist
  75.                      | HOMESERVERS
  76.                      | BINSERVERS classlist
  77.                      | BINSERVERS
  78.                      | MAILSERVER classlist
  79.                      | MAILSERVER
  80.                      | REQUIRED classlist
  81.                      | REQUIRED
  82.                      | MOUNTABLES classlist
  83.                      | MOUNTABLES
  84.                      | LINKS classlist
  85.                      | LINKS
  86.                      | IMPORT classlist
  87.                      | IMPORT
  88.                      | SCRIPTS classlist
  89.                      | SCRIPTS
  90.                      | DISABLE classlist
  91.                      | DISABLE
  92.                      | MAKEPATH classlist
  93.                      | MAKEPATH
  94.                      | FILEIGNORE classlist
  95.                      | FILEIGNORE
  96.                      | BROADCAST classlist
  97.                      | BROADCAST
  98.                      | DEFAULTROUTE classlist
  99.                      | DEFAULTROUTE
  100.                      | MISCMOUNTS classlist
  101.                      | MISCMOUNTS
  102.                      | UNMOUNT classlist
  103.                      | UNMOUNT
  104.                      | ACL edits
  105.                      | ACL
  106.                      | ADMIT classlist
  107.                      | ADMIT
  108.                      | DENY classlist
  109.                      | DENY
  110.                      | EDITFILES
  111.                      | EDITFILES edits;
  112.  
  113. controllist:           declarations
  114.                      | PARSECLASS declarations
  115.                      | PARSECLASS
  116.                      | controllist PARSECLASS
  117.                      | controllist PARSECLASS declarations;
  118.  
  119. declarations:          declaration
  120.                      | declarations declaration;
  121.  
  122. classlist:             list
  123.                      | PARSECLASS list
  124.                      | PARSECLASS
  125.                      | classlist PARSECLASS
  126.                      | classlist PARSECLASS list;
  127.  
  128. declaration:           ID EQUALS bracketlist;
  129.  
  130. bracketlist:           LBRACK list RBRACK;
  131.  
  132. list:                  entry
  133.                      | list entry;
  134.  
  135. entry:                 ITEM              
  136.                      | PATH ARROW PATH
  137.                      | PATH ARROW VARPATH 
  138.                      | PATH LARROW PATH
  139.                      | PATH LARROW ITEM
  140.                      | PATH LARROW VARPATH
  141.                      | PATH ARROW WILDCARD
  142.                      | VARPATH ARROW WILDCARD
  143.                      | PATH LARROW WILDCARD
  144.                      | VARPATH LARROW WILDCARD
  145.                      | VARPATH ARROW PATH
  146.                      | VARPATH ARROW VARPATH 
  147.                      | VARPATH LARROW PATH
  148.                      | VARPATH LARROW ITEM
  149.                      | VARPATH LARROW VARPATH
  150.                      | PATH
  151.                      | ID
  152.                      | VARPATH
  153.                      | VARITEM
  154.                      | WILDCARD       
  155.                      | QSTRING;
  156.  
  157.  
  158. edits:                 editbrackets
  159.                      | PARSECLASS
  160.                      | PARSECLASS editbrackets
  161.                      | edits PARSECLASS
  162.                      | edits PARSECLASS editbrackets;
  163.  
  164. editbrackets:          editbracket
  165.                      | editbrackets editbracket;
  166.  
  167. editbracket:           LBRACE PATH edlist RBRACE
  168.                      | LBRACE VARPATH edlist RBRACE
  169.                      | LBRACE ID edlist RBRACE;
  170.  
  171. edlist:                ed
  172.                      | edlist ed;
  173.  
  174. ed:                    ITEM QSTRING
  175.                      | ITEM
  176.                      | WILDCARD;
  177.  
  178. %%
  179.  
  180. /*****************************************************************/
  181.  
  182. yyerror(s)
  183.  
  184. char *s;
  185.  
  186. {
  187. fprintf (stderr, "cf:%s:%s:%d: %s \n",VPREFIX,VCURRENTFILE,LINENUMBER,s);
  188.  
  189. ERRORCOUNT++;
  190.  
  191. if (ERRORCOUNT > 10)
  192.    {
  193.    FatalError("Too many errors");
  194.    }
  195. }
  196.  
  197. /*****************************************************************/
  198.  
  199. /* EOF */
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.